From: Florian Müllner Date: Mon, 8 Jul 2019 22:11:06 +0000 (+0200) Subject: windowManager: Use new reorder_workspace() API X-Git-Tag: archive/raspbian/50.5-1+rpi1~1^2~845^2^2~58 X-Git-Url: https://dgit.raspbian.org/%22http://www.example.com/cgi/%22/%22http:/www.example.com/cgi/%22?a=commitdiff_plain;h=ff9bb5399b1d22fceaf00c9fc8e0058f24af96cc;p=gnome-shell.git windowManager: Use new reorder_workspace() API With the new Mutter API, inserting a workspace at a particular position becomes as easy as creating the workspace and moving it to the desired index. https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/620 --- diff --git a/js/ui/windowManager.js b/js/ui/windowManager.js index 6ff952da7..9322569f7 100644 --- a/js/ui/windowManager.js +++ b/js/ui/windowManager.js @@ -1203,41 +1203,9 @@ var WindowManager = class { if (!Meta.prefs_get_dynamic_workspaces()) return; - workspaceManager.append_new_workspace(false, global.get_current_time()); - - let windows = global.get_window_actors().map(a => a.meta_window); - - // To create a new workspace, we slide all the windows on workspaces - // below us to the next workspace, leaving a blank workspace for us - // to recycle. - windows.forEach(window => { - // If the window is attached to an ancestor, we don't need/want - // to move it - if (window.get_transient_for() != null) - return; - // Same for OR windows - if (window.is_override_redirect()) - return; - // Sticky windows don't need moving, in fact moving would - // unstick them - if (window.on_all_workspaces) - return; - // Windows on workspaces below pos don't need moving - let index = window.get_workspace().index(); - if (index < pos) - return; - window.change_workspace_by_index(index + 1, true); - }); - - // If the new workspace was inserted before the active workspace, - // activate the workspace to which its windows went - let activeIndex = workspaceManager.get_active_workspace_index(); - if (activeIndex >= pos) { - let newWs = workspaceManager.get_workspace_by_index(activeIndex + 1); - this._blockAnimations = true; - newWs.activate(global.get_current_time()); - this._blockAnimations = false; - } + let newWs = workspaceManager.append_new_workspace( + false, global.get_current_time()); + workspaceManager.reorder_workspace(newWs, pos); } keepWorkspaceAlive(workspace, duration) {